a7fb7f9f547fe59e32d8a302e930ffb4e932083f,java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateClassFromUsageBaseFix.java,CreateClassFromUsageBaseFix,getSuperClassName,#PsiJavaCodeReferenceElement#,137
Before Change
@Nullable
protected static String getSuperClassName(final PsiJavaCodeReferenceElement element) {
String superClassName = null;
final PsiElement ggParent = element.getParent().getParent();
if (ggParent instanceof PsiMethod) {
PsiMethod method = (PsiMethod)ggParent;
if (method.getThrowsList() == element.getParent()) {
superClassName = "java.lang.Exception";
}
} else if (ggParent instanceof PsiClassObjectAccessExpression) {
After Change
@Nullable
protected String getSuperClassName(final PsiJavaCodeReferenceElement element) {
String superClassName = null;
PsiElement parent = element.getParent();
final PsiElement ggParent = parent.getParent();
if (ggParent instanceof PsiMethod) {
PsiMethod method = (PsiMethod)ggParent;
if (method.getThrowsList() == parent) {
superClassName = "java.lang.Exception";
}
} else if (ggParent instanceof PsiClassObjectAccessExpression) {
final ExpectedTypeInfo[] expectedTypes = ExpectedTypesProvider.getExpectedTypes((PsiExpression)ggParent, false);
if (expectedTypes.length == 1) {
final PsiClassType.ClassResolveResult classResolveResult = PsiUtil.resolveGenericsClassInType(expectedTypes[0].getType());
final PsiClass psiClass = classResolveResult.getElement();
if (psiClass != null && CommonClassNames.JAVA_LANG_CLASS.equals(psiClass.getQualifiedName())) {
PsiType psiType = classResolveResult.getSubstitutor().substitute(psiClass.getTypeParameters()[0]);
if (psiType instanceof PsiWildcardType && ((PsiWildcardType)psiType).isExtends()) {
psiType = ((PsiWildcardType)psiType).getExtendsBound();
}
final PsiClass aClass = PsiUtil.resolveClassInType(psiType);
if (aClass != null) return aClass.getQualifiedName();
}
}
} else if (ggParent instanceof PsiExpressionList && parent instanceof PsiExpression && myKind == CreateClassKind.ENUM) {
final ExpectedTypeInfo[] expectedTypes = ExpectedTypesProvider.getExpectedTypes((PsiExpression)parent, false);
if (expectedTypes.length == 1) {
final PsiClassType.ClassResolveResult classResolveResult = PsiUtil.resolveGenericsClassInType(expectedTypes[0].getType());
final PsiClass psiClass = classResolveResult.getElement();